package net.qhzw.vip.qiyu.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.qhzw.vip.qiyu.dto.ContractDto;
import net.qhzw.vip.qiyu.entity.DtsCarRental;
import net.qhzw.vip.qiyu.model.*;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface DtsCarRentalMapper extends BaseMapper<DtsCarRental> {

    /***
     * 分页查询租车申请列表
     * @param keywords 真实姓名 | 身份证号 | 手机号码
     * @return
     */
    List<DtsCarRentalVo> findByPage(@Param("keywords") String keywords,
                                    @Param("communityId") Long communityId);

    /***
     * 后台管理员查询租车申请
     * @return
     */
    List<SysDtsCarRentalVo> sysFindByPage(@Param("shopId") Long shopId,
                                          @Param("query") SysCarRentalQuery query);


    /**
     * 获取最大合同编号
     *
     * @return
     */
    String maxContractNo(@Param("shopId") Long shopId);

    DtsCarRental getById(Serializable id);

    /***
     * 查询用户余额
     * @param carRentalId
     * @return
     */
    BigDecimal getUserbalance(Long carRentalId);

    /**
     * 根据id更新
     *
     * @param dtsCarRental
     * @return
     */
    int updateByPrimaryKeySelective(DtsCarRental dtsCarRental);

    /**
     * 根据当前登录用户获取租车信息
     *
     * @param userId
     * @return
     */
    UserCarRental getCarRentalByUser(@Param("userId") Long userId);

    /***
     * 查询在租台账数据
     * @param query
     * @return
     */
    List<LedgerData> findLedger(@Param("shopId") Long shopId,
                                @Param("query") SysCarRentalQuery query);

    /**
     * 查询租车量
     *
     * @param shopId
     * @return
     */
    Map<String, Integer> carRentalCount(@Param("shopId") Long shopId);

    /***
     * 今日租车明细
     * @param shopId
     * @param contractNo
     * @param idCard
     * @param mobile
     * @param realName
     * @param communityId
     * @return
     */
    List<DtsCarRentalExcel> leaseDetails(@Param("shopId") Long shopId,
                                         @Param("contractNo") String contractNo,
                                         @Param("idCard") String idCard,
                                         @Param("mobile") String mobile,
                                         @Param("realName") String realName,
                                         @Param("communityId") Long communityId);

    /**
     * 查询租车合同公司
     *
     * @param userId
     * @return
     */
    ContractDto findCarRentalContract(Long userId);

    void updateIsPay(Long id);
}